package com.fortune.dao;

import com.fortune.dto.in.pRole.PPermissionAddDto;
import com.fortune.dto.in.pRole.PRoleAddDto;
import com.fortune.dto.in.pRole.PRoleEditDto;
import com.fortune.dto.in.pRole.PRoleListDto;
import com.fortune.entity.PPosition;
import com.fortune.vo.pRole.PRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PRoleDao {
    /**
     * 岗位列表
     * @param listDto
     * @return
     */
    List<PRole> listMRoles(PRoleListDto listDto);

    /**
     * 岗位列表个数
     * @param listDto
     * @return
     */
    int countRoles(PRoleListDto listDto);

    /**
     * 通过名字查重
     * @param name
     * @return
     */
    PPosition getPositionByName(String name);

    /**
     *  添加岗位
     * @param pRoleAddDto
     * @return
     */
    int insertRole(PRoleAddDto pRoleAddDto);

    /**
     * 通过岗位id查是否存在
     * @param roleId
     * @return
     */
    PPosition getPositionByRoleId(String roleId);

    /**
     * 通过岗位id和岗位名称查是否存在
     * @param name
     * @param roleId
     * @return
     */
    PPosition getPositionByNameAndRoleId(@Param("name") String name, @Param("roleId") String roleId);

    /**
     * 编辑岗位
     * @param editDto
     * @return
     */
    int updateRole(PRoleEditDto editDto);

    /**
     * 删除岗位
     * @param roleId
     * @return
     */
    int deleteRole(String roleId);

    /**
     * 查看权限个数
     * @param list
     * @return
     */
    int countExsistPermissionCount(List<PPermissionAddDto> list);

    /**
     * 添加权限
     * @param list
     * @param positionId
     * @return
     */
    int insertRolePermissions(@Param("list") List<PPermissionAddDto> list, @Param("positionId") String positionId);

    /**
     * 查询平台岗位权限是否存在
     * @param positionId
     * @return
     */
    int queryRolePermissionsExist(String positionId);

    /**
     * 删除平台岗位权限
     * @param positionId
     * @return
     */
    int deletePermissionsByRoleId(String positionId);

    int queryUserByRoleId(String roleId);
}
